In a typical hard disk drive system, information read by a read head from a rotating magnetic disk is embodied in an analog signal which is supplied through a preamplifier to a read channel circuit. The read channel circuit includes an analog-to-digital converter circuit which periodically samples the analog signal, and which outputs successive digital samples that are supplied through a finite impulse response (FIR) filter to a digital detector circuit. The filter output is also supplied to a band/error circuit, which determines a band value and an error value for each filtered digital sample. The band and error values are used in feedback timing and gain recovery loops which adjust the timing and amplitude of the samples taken by the analog-to-digital converter circuit, so as to optimize the overall operation of the read channel circuit.
In the typical band/error circuit, a relatively complex subtracter circuit calculates the band value using all of the bits in the digital filter output, and a further relatively complex subtracter circuit calculates the error value using all of the bits in the digital filter output. Each subtracter circuit requires a number of arithmetic operations and clock cycles in order to calculate the band value or error value.
While band/error circuits of this type have been generally adequate for their intended purposes, they have not been satisfactory in all respects. For example, the two complex subtracter circuits each require a relatively significant amount of area in an integrated circuit, and consume a relatively significant amount of power. Further, the number of arithmetic operations and clock cycles required by each subtracter to calculate each band value or error value can create a time delay or latency which may affect the operation of the critical timing loop in which the band/error circuit is disposed, even to the point where stability of the operation of the overall read channel circuit may be affected. In addition, target and threshold levels in such a band/error circuit, which are used to determine the band and error values, are typically fixed or else require extra hardware in order to allow programmability.